package com.Dao.Imp;
import com.Dao.DeleteInfoDao;
import com.Utils.C3P0Utils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.dbutils.QueryRunner;
import org.springframework.stereotype.Service;
import java.sql.SQLException;
@Service
@Slf4j
public class DeleteInfoDaoImp implements DeleteInfoDao {
    @Override
    public void deleteUserInfo(int id) {
        QueryRunner queryRunner = new QueryRunner(C3P0Utils.getDataSource());
        String sql = "delete from userList where id=?";
        try {
            queryRunner.update(sql, id);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    @Override
    public void deleteAuthorInfo(int id) throws SQLException {
        QueryRunner queryRunner=new QueryRunner(C3P0Utils.getDataSource());
        String sql="delete from author where id=?";
        queryRunner.update(sql,id);
    }
    @Override
    public void deleteAuApplyInfo(int id,int status) throws SQLException {
        QueryRunner queryRunner=new QueryRunner(C3P0Utils.getDataSource());
        String sql="delete from authortemporary where id=?";
        String sql1="update authortemporary set status=? where id=?";
        /*
        写一个触发器，当更新临时表的status字段为0，会直接删除此条语句
        数据库写了一个触发器，在更新status字段前，先判断当前的状态是否为1，为1则将数据插入到数据库，否则则不会插入
        然后在删除临时表中的申请成为作者的信息，至于为什么不写一个触发器，插入的同时删除临时表的记录，这种是做不到的
        并且更新临时表的status字段，并不是多此一举，而是为了方便将数据插入到作者表，不做这个操作，就会出现，无论是同意还是拒绝，都会
        将数据插入作者表，这是不对的。
         */
        queryRunner.update(sql1,status,id);//先更新，再删除,因为如果是同意的话，只能先插入数据
        queryRunner.update(sql,id);
    }

    @Override
    public void deleteBookInfo(int id) throws SQLException {
        QueryRunner queryRunner=new QueryRunner(C3P0Utils.getDataSource());
        String sql="delete from books_detail where id=?";
        queryRunner.update(sql,id);
    }
}
